package com.atguigu.sort;

/**
 * @description:
 * @author: lizhenhua05
 * @created: 2021/07/03 16:50
 * 实现另一种更好理解的排序算法
 */
public class QuickSort2 {
    int[] arr = new int[]{10,2,1,3,46,32};

    //入参必须要有左右俩个数据，快排是原地排序算法，需要告诉它对哪个范围的数据进行排序
    public int[] sort(int[] arr,int left,int right){
        //找到一个数组的索引值，进行分治排序
        int priv = (left+right)/2;
        int temp;

        while (left<right){

            //找到一个大于固定位置的值
            while (arr[left]<arr[priv] && left<right){
                left++;
            }
            //找到一个小于固定位置的值
            while (arr[right]>arr[priv] && right>left){
                right--;
            }

            if (left<right){
                temp = arr[left];
                arr[left] = arr[right];
                arr[right] = temp;
            }

        }

        if (arr[right]>arr[priv]){
            temp = arr[right];
            arr[right] = arr[priv];
            arr[priv] = temp;
        }


    }
}
